Learn R Programming

Directional (version 6.8)

Euler angles from a rotation matrix on SO(3): Compute the Euler angles from a rotation matrix on SO(3).

Description

It calculates three euler angles \((\theta_{12}, \theta_{13}, \theta_{23})\) from a \((3 \times 3)\) rotation matrix X, where X is defined as \(X = R_z(\theta_{12})\times R_y(\theta_{13}) \times R_x(\theta_{23})\). Here \(R_x(\theta_{23})\) means a rotation of \(\theta_{23}\) radians about the x axis.

Usage

rot2eul(X)

Value

For a given rotation matrix, there are two eqivalent sets of euler angles.

Arguments

X

A rotation matrix which is defined as a product of three elementary rotations mentioned above. Here \( \theta_{12}, \theta_{23} \in (-\pi, \pi)\) and and \(\theta_{13} \in (-\pi/2, \pi/2)\).

Author

Anamul Sajib <sajibstat@du.ac.bd>.

R implementation and documentation: Anamul Sajib <sajibstat@du.ac.bd>.

Details

Given a rotation matrix X, euler angles are computed by equating each element in X with the corresponding element in the matrix product defined above. This results in nine equations that can be used to find the euler angles.

References

Green, P. J. and Mardia, K. V. (2006). Bayesian alignment using hierarchical models, with applications in proteins bioinformatics. Biometrika, 93(2):235--254.

http://www.staff.city.ac.uk/~sbbh653/publications/euler.pdf

See Also

eul2rot

Examples

Run this code
# three euler angles

theta.12 <- sample( seq(-3, 3, 0.3), 1 )
theta.23 <- sample( seq(-3, 3, 0.3), 1 )
theta.13 <- sample( seq(-1.4, 1.4, 0.3), 1 )

theta.12 ; theta.23 ; theta.13

X <- eul2rot(theta.12, theta.23, theta.13)
X  ##  A rotation matrix

e <- rot2eul(X)$v1

theta.12 <- e[3]
theta.23 <- e[2]
theta.13 <- e[1]

theta.12 ; theta.23 ; theta.13

Run the code above in your browser using DataLab